Completed
Branch master (ebb499)
by Alexey
04:15
created

BlockDrop.changeCols   B

Complexity

Conditions 5
Paths 4

Size

Total Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
nc 4
nop 2
dl 0
loc 15
rs 8.8571
c 0
b 0
f 0
1
2
3
function BlockDrop() {
4
  this.rows = 0;
5
  this.binded = false;
6
}
7
8
9
BlockDrop.prototype.bindUi = function () {
10
  if (this.binded) {
11
    //$(".block-preset,.blockMap .block").draggable();
12
    //$(".block-preset,.blockMap .block").draggable("destroy");
13
    //$(".block-preset,.blockMap .block").droppable();
14
    //$(".block-preset,.blockMap .block").droppable("destroy");
15
    $(".block-preset,.blockMap .rows .row > div").sortable();
16
    $(".block-preset,.blockMap .rows .row > div").sortable("destroy");
17
  }
18
  $(".block-preset,.blockMap .rows .row > div").sortable({
19
    placeholder: "ui-state-highlight",
20
    forceHelperSize: true,
21
    opacity: 0.5,
22
    connectWith: ".block-preset,.blockMap .rows .row > div",
23
    tolerance: "pointer",
24
  });
25
  /*
26
   $(".blockMap .blockCol, .block-preset").droppable({
27
   activeClass: "ui-state-default",
28
   hoverClass: "ui-state-hover",
29
   accept: ":not(.ui-sortable-helper)",
30
   drop: function (event, ui) {
31
   //$(this).find(".placeholder").remove();
32
   $("<div class ='block'  data-code='" + ui.draggable.data('code') + "'></div>").text(ui.draggable.text()).appendTo(this).draggable({
33
   appendTo: "body",
34
   revert: true,
35
   });
36
   if (ui.draggable.closest('.rows').length > 0) {
37
   ui.draggable.remove();
38
   }
39
   }
40
   }).sortable({
41
   items: "div:not(.placeholder)",
42
   placeholder: "ui-state-highlight",
43
   sort: function () {
44
   //$(this).removeClass("ui-state-default");
45
   //$(this).css('width','auto');
46
   }
47
   });
48
   $(".block-preset .block,.blockMap .block").draggable({
49
   appendTo: "body",
50
   revert: true,
51
   stack: ".block-preset .block,.blockMap .block",
52
   opacity: 0.7,
53
   connectToSortable: '.blockMap .blockCol, .block-preset',
54
   });
55
   */
56
  this.binded = true;
57
}
58
BlockDrop.prototype.addRow = function (selector) {
59
  var html = '<div class = "rowsSelector">';
60
  html += '<div class = "form-group">';
61
  html += '<label>Число столбцов</label><div class = "cleaner"></div>';
62
  html += '<div class="btn-group" data-toggle="buttons">';
63
  for (var i = 1; i <= 12; i++) {
64
    html += '<label class="btn btn-primary colsRadio" onclick="blockDrop.changeCols(this,' + i + ')">\
65
                    <input type="radio" name="options" autocomplete="off"> ' + i + '\
66
                </label>';
67
  }
68
  html += '</div>';
69
  html += '</div>';
70
  html += '<div class = "row colsSelect">';
71
  html += '<div class = "blockCol col-xs-12">12</div>';
72
  html += '</div>';
73
  html += '<div class = "form-group"><button class = "btn btn-success" onclick = "blockDrop.acceptAddRow(this);" data-dismiss="modal">Добавить строку</button></div>';
74
  html += '</div>';
75
  var modal = inji.Ui.modals.show('Выбор разметки', html);
0 ignored issues
show
Unused Code introduced by
The variable modal seems to be never used. Consider removing it.
Loading history...
76
}
77
BlockDrop.prototype.changeCols = function (btn, count) {
78
  var rowselector = $(btn).closest('.rowsSelector');
79
  rowselector.find('.colsSelect').html('');
80
  var parts = 0;
81
  var part = parseInt(12 / count);
82
  for (var i = 1; i <= count; i++) {
83
    parts += part;
84
    if (parts > 12) {
85
      part = parts - 12;
86
    } else if (i == count && parts < 12) {
87
      part = part + 12 - parts;
88
    }
89
    rowselector.find('.colsSelect').append('<div class = "blockCol col-xs-' + part + '">' + part + '</div>');
90
  }
91
}
92
93
BlockDrop.prototype.acceptAddRow = function (btn) {
94
  var rowselector = $(btn).closest('.rowsSelector');
95
  var row = rowselector.find('.colsSelect').clone();
96
  $.each(row.find('.blockCol'), function () {
97
    $(this).html('');
98
  })
99
  $('.blockMap .rows').append(row);
100
  blockDrop.bindUi();
101
}
102
103
BlockDrop.prototype.submitMap = function (btn) {
104
  var form = $(btn).closest('form');
105
  var map = form.find('.rows');
106
  var reClasses = ['ui-state-hover', 'ui-draggable', 'ui-draggable-handle', 'ui-sortable-handle', 'ui-droppable', 'ui-sortable', 'ui-state-hover'];
107
  for (key in reClasses) {
0 ignored issues
show
Bug introduced by
The variable key seems to be never declared. Assigning variables without defining them first makes them global. If this was intended, consider making it explicit like using window.key.
Loading history...
108
    map.removeClass(reClasses[key]);
109
    map.find('.' + reClasses[key]).removeClass(reClasses[key]);
110
  }
111
  map.find('.containerClass').removeClass('containerClass').addClass('container');
112
  $.each(map.find('.block'), function () {
113
    $(this).html($(this).data('code'));
114
    $(this).removeAttr('data-code');
115
    $(this).removeAttr('style');
116
  })
117
  form.find('[name="map"]').val(map.html());
118
  //console.log(map.html())
119
  //return false;
120
  setTimeout(function () {
121
    form.submit();
122
  }, 500);
123
124
}
125
BlockDrop.prototype.initActual = function (selector) {
126
  $(selector).find('.container').removeClass('container').addClass('containerClass');
127
  $.each($(selector).find('.block'), function () {
128
    var code = $(this).text();
129
    $(this).text($('[data-code="' + code + '"]').text());
130
    $(this).data('type', $('[data-code="' + code + '"]').data('type'));
131
    if ($(this).data('type') == 'single') {
132
      $('[data-code="' + code + '"]').remove();
133
    }
134
    $(this).data('code', code);
135
  });
136
  blockDrop.bindUi();
137
}
138
var blockDrop = new BlockDrop();